"""
文件相关的类
"""
import json

from data_define import Reader


# 先定义一个抽泉类用来做项层设计，确定有哪些功能需要实观
class FileReader:

    def read_data(self) -> list[Reader]:
        """
        渎取文件的数齿， 渎到的每一条数据前转换为Record矿象，将它们都封装到List内返回即可
        """
        pass


class TextFileReader(FileReader):

    def __init__(self, file_path):
        self.file_path = file_path  # 定义成员变量记录文件的路径

    # 复写（实现抽象方法）父类的方法
    def read_data(self) -> list[Reader]:
        with open(self.file_path, 'r', encoding='utf-8') as f:
            reader_list: list[Reader] = []  # 类型注解写法1
            for line in f.readlines():
                line = line.strip()
                data_list = line.split(',')
                ret = Reader(data_list[0], data_list[1], int(data_list[2]), data_list[3])
                reader_list.append(ret)
            return reader_list


class JsonFileReader:

    def __init__(self, file_path):
        self.file_path = file_path  # 定义成员变量记录文件的路径

    # 复写（实现抽象方法）父类的方法
    def read_data(self) -> list[Reader]:
        with open(self.file_path, 'r', encoding='utf-8') as f:
            reader_list = []  # type:list[Reader]  # 类型注解写法2
            for line in f.readlines():
                data_dict = json.loads(line)
                ret = Reader(data_dict['date'], data_dict['order_id'], data_dict['money'], data_dict['province'])
                reader_list.append(ret)
            return reader_list


if __name__ == '__main__':
    reader = TextFileReader('./2011年1月销售数据.txt')
    list1 = reader.read_data()
    jsonFileReader = JsonFileReader('./2011年2月销售数据JSON.txt')
    list2 = jsonFileReader.read_data()

    for item in list1:
        print(item)

    for item in list2:
        print(item)